package edu.neu.swc.cloud.dao;

import edu.neu.swc.cloud.domain.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AdminDao {
    /**
     * 找到所有用户
     * SQL:select * from super_admin
     * @return
     */
    List<Admin> findAll();

    /**
     * 添加用户
     * SQL:insert into super_admin values(?,?,?,?,?,?)
     * @param admin
     */
    void addAdmin(Admin admin);

    /**
     * 依据用户的ID找到用户
     * SQL:select * from super_admin where ad_id = ?
     * @param admin_id
     * @return
     */
    Admin findAdminById(int admin_id);

    /**
     * 修改用户信息，这里id字段和type字段不允许修改
     * SQL:update super_admin set ad_username = ?,ad_password = ?,ad_real_name = ?,ad_tel = ? where ad_id = ?
     * @param admin
     */
    void updateAdmin(Admin admin);

    /**
     * 删除用户信息，这里不作身份验证
     * SQL:delete from super_admin where ad_id = ?
     * @param admin_id
     */
    void deleteAdminById(int admin_id);

    /**
     * 依据条件，多字段查询用户信息
     * @param admin
     * @return
     */
    List<Admin> findAdminByCon(Admin admin);

    /**
     * 依据用户名和密码找到管理员信息
     * @param ad_username
     * @param ad_password
     * @return
     */
    List<Admin> findByUsernameAndPassword(@Param("ad_username") String ad_username,
                                          @Param("ad_password") String ad_password);

    /**
     * 依据用户名查找用户信息
     * @param ad_username
     * @return
     */
    Admin findAdminByUsername(String ad_username);

    /**
     * 获取管理员总数
     * @param username
     * @return
     */
    int getAdminCounts(@Param("username") String username);

    /**
     * 依据条件获取管理员列表
     * @param username
     * @param pageStart
     * @param pageSize
     * @return
     */
    List<Admin> findAdminByQuery(@Param("username") String username,
                                 @Param("pageStart") int pageStart,
                                 @Param("pageSize") int pageSize);
}
